/**
 * 请求拦截器
 * @param {*} vm 
 */
import {
	md5
} from '@/utils/MD5.js'

module.exports = (vm) => {
	uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
		config.data = config.data || {}
		
		console.log(config.headers, '奥斯卡铝合金大量时间看')
		
		return
		
		let auth = true // 需要token
		if (config.custom.auth !== undefined) auth = config.custom.auth
		// 去掉null的属性
		for (let key in config.data) {
			if (config.data[key] == null) {
				Reflect.deleteProperty(config.data, key)
			}
		}
		const token = vm.$store.state.userInfo.token || ''
		if (auth && !token) {
			uni.reLaunch({
				url: '/pages/login/index'
			})
			return false
		}
		// config.header.token = vm.$store.state.userInfo.token
		config.data.token = token
		// config.data.token = '26675655-4a15-46d4-a0e2-bccda7b0f2d8'


		let time = new Date().getTime();
		let sign = objKeySort(config.data, time)
		let newConfig = JSON.parse(JSON.stringify(config))
		newConfig.data.time = time;
		newConfig.data.sign = sign;

		console.log('%c [ 请求参数： ]', 'font-size:13px; background:pink; color:#bf2c9f;', newConfig)

		// loading
		if (newConfig.custom.loading) {
			uni.showLoading({
				title: newConfig.custom.loading
			})
		}
		return newConfig
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})
}

// 对象属性升序排列=>md5二次加密
function objKeySort(obj, time) {
	var newkey = Object.keys(obj).sort();
	//先用Object内置类的keys方法获取要排序对象的属性名，再利用Array原型上的sort方法对获取的属性名进行排序，newkey是一个数组
	var newObj = {}; //创建一个新的对象，用于存放排好序的键值对
	for (var i = 0; i < newkey.length; i++) { //遍历newkey数组
		newObj[newkey[i]] = obj[newkey[i]]; //向新创建的对象中按照排好的顺序依次增加键值对
	}
	newObj.time = time;
	newObj.api_secret_key = '0dc0b6507dd883d7';
	let secret_key = addQueryString(newObj);
	// console.log('%c [ secret_key： ]', 'font-size:13px; background:pink; color:#bf2c9f;', newObj)

	return md5(md5(secret_key)); //返回排好序的新对象
}

// 对象转成&拼接参数
function addQueryString(params) {
	var str = '';
	for (var Key in params) {
		str += Key + '=' + params[Key] + '&';
	}

	return str.substr(0, str.length - 1);
}